package com.app.gamev2.game

/**
 * 游戏配置类，存储游戏中需要的各种常量值
 */
object GameConfig {
    // 平台相关配置
    // 注意：平台间距是固定值，不会随游戏进程（如高度、等级等）而变化
    const val PLATFORM_MIN_SPACING_DP = 40 // 平台最小垂直间距(dp)
    const val PLATFORM_MAX_SPACING_DP = 90 // 平台最大垂直间距(dp) - 固定在此范围内，不会随游戏进程增加
    const val PLATFORM_MIN_WIDTH_DP = 70 // 平台最小宽度(dp)
    const val PLATFORM_MAX_WIDTH_DP = 200 // 平台最大宽度(dp)
    const val PLATFORM_HEIGHT_DP = 20 // 平台高度(dp)
    const val PLATFORM_DISAPPEAR_DELAY_MS = 3000 // 平台消失延迟时间(毫秒)
    
    // 游戏判定相关配置
    const val WIN_HEIGHT_M = 100f // 胜利所需高度(米)
    const val WIN_BUCKET_LEVEL = 10 // 胜利所需水桶等级
    
    // 动画相关配置
    const val JUMP_ANIMATION_DURATION_MS = 600 // 跳跃动画持续时间(毫秒)
    const val LAND_ANIMATION_DURATION_MS = 450 // 落地动画持续时间(毫秒)
    const val MERGE_ANIMATION_DURATION_MS = 600 // 水桶合并动画持续时间(毫秒)
    
    // 物理相关配置
    const val GRAVITY = 28f // 增加重力加速度，使下落速度更快
    const val JUMP_FORCE_MULTIPLIER = 2.5f // 调整跳跃力倍数，增加跳跃力度
    const val PLAYER_MOVE_UNIT = 60f // 玩家每次移动的单位距离(像素)，提升移动速度
    const val MAX_JUMP_COUNT = 2 // 最大连跳次数(包括第一次跳跃)
    const val SECOND_JUMP_FORCE_REDUCTION = 0.8f // 第二次跳跃力度减少比例
    
    // 游戏状态枚举
    enum class GameState {
        READY, // 准备状态
        PLAYING, // 游戏进行中
        WIN, // 胜利
        LOSE // 失败
    }
}